﻿using Microsoft.WindowsAzure;
using System;
using Nardax.Azure.StorageClient;

namespace Nardax.Azure
{
    public interface ICloudStorageFactory
    {
        ICloudStorageAccount CreateStorageAccount(string connectionString);

        ICloudStorageAccount CreateStorageAccount(StorageCredentialsAccountAndKey storageCredentialsAccountAndKey, bool useHttps);

        ICloudStorageAccount CreateStorageAccount(StorageCredentials storageCredentials, Uri blobEndpoint, Uri queueEndpoint, Uri tableEndpoint);

        ICloudQueue GetQueueReference(string queueAddress, string connectionString);

        ICloudQueue<T> GetQueueReferenceWithBinarySerializer<T>(string queueAddress, string connectionString);

        ICloudQueue<T> GetQueueReferenceWithXmlSerializer<T>(string queueAddress, string connectionString);
    }
}